home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
4_0
/
NOFLICKE
/
MBAREVEN.C1
next >
Wrap
Text File
|
1990-12-27
|
3KB
|
160 lines
#include <EventMgr.h>
#include <MenuMgr.h>
#include <WindowMgr.h>
extern Boolean WNEIsImplemented;
extern Boolean Suspended;
extern Boolean editEnabled;
extern MenuHandle EditMenu;
#define suspResEvt 0x01 /* Suspend/Resume event */
#define osEvent app4Evt /* event used by MultiFinder */
#define suspendMask 0x00000001 /* suspend event mask */
#ifndef NULL
#define NULL 0
#endif
void EventLoop (void);
void DoUpdate (WindowPtr);
void DoActivate (WindowPtr, Boolean);
void EventLoop ()
{
EventRecord evt;
GrafPtr evtPort;
short evtPart;
SystemTask ();
if (WNEIsImplemented)
WaitNextEvent (everyEvent, &evt, Suspended ? 10 : 0, NULL);
else
GetNextEvent (everyEvent, &evt);
switch (evt.what) {
case nullEvent: {
WindowPtr fWPtr = FrontWindow ();
if (!fWPtr) {
if (editEnabled) {
DisableItem (EditMenu, 0);
editEnabled = false;
DrawMenuBar ();
}
}
else if (((WindowPeek) fWPtr)->windowKind < 0) {
if (!editEnabled) {
EnableItem (EditMenu, 0);
editEnabled = true;
DrawMenuBar ();
}
}
else {
if (editEnabled) {
DisableItem (EditMenu, 0);
editEnabled = false;
DrawMenuBar ();
}
}
break;
}
/* Mouse click. Get the window that the click occurred in, and the
part of the window. */
case mouseDown: {
switch (evtPart = FindWindow (evt.where, &evtPort)) {
/* Click in a desk accessory window. Pass back to the system. */
case inSysWindow:
SystemClick (&evt, evtPort);
break;
/* Click in menu bar. Track the mouse and execute selected command,
if any. */
case inMenuBar:
SetupMenus ();
DoMenuCommand (MenuSelect (evt.where));
break;
/* Click in content region. If the about window is active
hide it. */
case inContent:
ShowHideAbout ();
break;
}
break; /* mouseDown */
}
/* Key event. If the command key was down, process as menu item
selection, otherwise do nothing */
case keyDown:
if (evt.modifiers & cmdKey) {
SetupMenus ();
DoMenuCommand (MenuKey (evt.message & charCodeMask));
}
break;
/* Update a window. */
case updateEvt:
DoUpdate ((WindowPtr) evt.message);
break;
/* Activate or deactivate a window. */
case activateEvt:
DoActivate ((WindowPtr) evt.message, ((evt.modifiers & activeFlag) != 0));
break;
/* handle inserts of uninitialized disks */
case diskEvt: {
Point diskInitPt;
SetPt (&diskInitPt, 100, 120);
if (HiWord (evt.message) != noErr) {
DILoad ();
(void) DIBadMount (diskInitPt, evt.message);
DIUnload ();
}
break;
}
/* handle multifinder events (i.e., suspend/resume and mouse moved events). */
case osEvent: {
switch ((evt.message >> 24) & 0x000000ff) {
case suspResEvt:
/* Set up system wide event state */
Suspended = !((evt.message & suspendMask) != 0);
if (!Suspended)
DrawMenuBar ();
break;
}
break;
}
}
InitCursor ();
}
void DoUpdate (wPtr)
WindowPtr wPtr;
{
extern WindowPtr AboutWPtr;
extern PicHandle AboutPic;
SetPort (AboutWPtr);
BeginUpdate (AboutWPtr);
DrawPicture (AboutPic, &AboutWPtr->portRect);
EndUpdate (AboutWPtr);
}
void DoActivate (wPtr, active)
WindowPtr wPtr;
Boolean active;
{
}